using System;

namespace nHydrate.EFCore.Attributes
{
	[AttributeUsage(AttributeTargets.Property)]
	public partial class EntityFieldMetadata : System.Attribute
	{
		public EntityFieldMetadata(
			string name,
			int sortOrder,
			bool uiVisible,
			int maxLength,
			string mask,
			string friendlyName,
			string defaultValue,
			bool allowNull,
			string description,
			bool isComputed,
			bool isUnique,
			double min,
			double max,
			bool isPrimaryKey
		)
		{
			this.Name = name;
			this.SortOrder = sortOrder;
			this.UIVisible = uiVisible;
			this.MaxLength = maxLength;
			this.Mask = mask;
			this.FriendlyName = friendlyName;
			this.Default = defaultValue;
			this.AllowNull = allowNull;
			this.Description = description;
			this.IsComputed = isComputed;
			this.IsUnique = isUnique;
			this.Min = min;
			this.Max = max;
			this.IsPrimaryKey = isPrimaryKey;
		}

		public string Name { get; set; }
		public int SortOrder { get; set; }
		public bool UIVisible { get; set; }
		public int MaxLength { get; set; }
		public string Mask { get; set; }
		public string FriendlyName { get; set; }
		public object Default { get; set; }
		public bool AllowNull { get; set; }
		public string Description { get; set; }
		public bool IsComputed { get; set; }
		public bool IsUnique { get; set; }
		public double Min { get; set; }
		public double Max { get; set; }
		public bool IsPrimaryKey { get; set; }
	}
}